package com.example.sangong;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;

import java.io.File;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;

public class RandomNameGenerator {


    private static final String SQL_TEMPLATE = "INSERT INTO t_person (id,name,age,delete_flag,birth_day,gender,create_time,update_time) VALUES\n" +
            "\t (%s,'%s',%s,0,'%s',%s,'2024-07-27 10:10:10','2024-08-27 10:10:10');";
    private static final String[] SURNAMES = {
            "张", "李", "王", "刘", "陈", "杨", "赵", "黄", "周", "吴",
            "徐", "孙", "马", "郭", "朱", "魏", "郑", "谢", "韩", "潘",
            "董", "尹", "梁", "余", "吕", "彭", "钟", "蔡", "赖", "唐",
            "沈", "袁", "何", "邹", "石", "林", "孔", "毛", "邵", "邓",
            "冯", "程", "曹", "常", "罗", "丁", "谭", "贺", "曾", "黎",
            "阮", "温", "陶", "骆", "江", "费", "贾", "鲁", "任", "庄",
            "万", "姚", "童", "顾", "梁", "龙", "涂", "陆", "戚", "侯",
            "艾", "范", "车", "仇", "涂", "毕", "牟", "焦", "邹", "莫",
            "邹", "连", "庞", "章", "姜", "赖", "卓", "倪", "韦", "郝",
            "贺", "祁", "戚", "温", "厉", "向", "阮", "涂", "盛", "纪",
            "蒋", "范", "苑", "欧", "窦", "梁", "崔", "鲁", "苏", "潘",
            "蓝", "解", "景", "祁", "余", "严", "傅", "石", "汪", "熊",
            "余", "曾", "乔", "伍", "蔡", "颜", "钟", "施", "缪", "柳",
            "高", "余", "丁", "沈", "熊", "屠", "郑", "梁", "余", "鲁",
            "辛", "冯", "黄", "江", "卫", "曾", "苏", "赵", "孟", "贾",
            "柳", "龚", "于", "张", "杜", "钟", "常", "侯", "谭", "尹",
            "尤", "成", "游", "黄", "康", "吕", "奚", "王", "严", "覃",
            "魏", "龙", "邱", "冯", "刘", "聂", "吕", "卢", "安", "陈",
            "阮", "戚", "丘", "欧", "范", "鲁", "龙", "苏", "高", "洪",
            "邵", "朱", "戴", "严", "阮", "尤", "沈", "骆", "戚", "乐",
            "鲍", "童", "庄", "章", "冯", "蒲", "桑", "彭", "屠", "贺",
            "牛", "邓", "郎", "张", "任", "董", "曾", "邹", "蔡", "蒋",
            "陶", "黄", "易", "罗", "祝", "白", "陶", "邹", "兰", "沈",
            "缪", "戚", "赖", "秦", "高", "吕", "黎", "毛", "裴", "盛",
            "包", "阮", "庞", "焦", "魏", "徐", "谭", "顾", "常", "徐",
            "吕", "程", "伍", "江", "郑", "钟", "万", "穆", "蒋", "程",
            "谢", "冯", "钟", "梁", "朱", "龙", "谭", "黎", "戚", "钱"
    };

    private static final String[] GIVEN_NAMES = {
            "伟", "芳", "娜", "敏", "静", "洋", "磊", "强", "涛", "涛",
            "俊", "梅", "军", "娟", "波", "琳", "杰", "秀", "鹏", "娟",
            "艳", "霞", "超", "伟", "云", "刚", "丽", "琪", "红", "莉",
            "斌", "文", "豪", "辉", "美", "娟", "宁", "明", "东", "晶",
            "辉", "军", "鹏", "磊", "艳", "文", "萍", "乐", "聪", "霞",
            "阳", "彬", "静", "玉", "江", "霞", "杰", "丽", "莹", "珍",
            "芳", "霞", "晨", "凌", "梅", "华", "鹏", "俊", "娜", "强",
            "伟", "红", "慧", "俊", "鑫", "宁", "伟", "磊", "婷", "鑫",
            "颖", "婷", "涛", "峰", "莉", "莹", "艳", "涛", "东", "婧",
            "丽", "晶", "雪", "杰", "华", "明", "丹", "青", "健", "玉",
            "伟", "磊", "芳", "艳", "超", "志", "美", "彬", "敏", "瑶",
            "亮", "红", "丽", "娜", "晶", "志", "豪", "静", "鑫", "蕾",
            "杰", "晓", "玲", "红", "丽", "海", "伟", "倩", "丽", "娟",
            "军", "博", "艳", "阳", "强", "云", "莹", "彬", "洋", "乐",
            "霞", "瑞", "彬", "磊", "华", "彤", "磊", "健", "艳", "涛",
            "燕", "伟", "涛", "静", "阳", "浩", "霞", "琳", "云", "佳",
            "涵", "翔", "琳", "婷", "俊", "悦", "丽", "娜", "彬", "珍",
            "志", "艳", "刚", "磊", "琳", "芬", "杰", "玲", "波", "瑶",
            "亮", "馨", "慧", "静", "云", "霞", "瑞", "艳", "婧", "豪",
            "佳", "晶", "雪", "燕", "莉", "婷", "超", "华", "健", "强",
            "美", "静", "军", "莉", "晓", "丽", "婷", "强", "玲", "雪",
            "华", "美", "涵", "雪", "明", "霞", "妍", "艳", "涛", "琳",
            "杰", "婷", "豪", "玲", "磊", "洁", "伟", "艳", "霞", "洁",
            "慧", "婷", "丽", "婷", "莹", "颖", "燕", "敏", "超", "玉",
            "佳", "丽", "霞", "婧", "晨", "艳", "志", "娜", "芬", "娜",
            "云", "雨", "飞", "丽", "艳", "雪", "燕", "美", "婷婷", "洁",
            "博", "霞", "丽", "丽", "娜", "慧", "云", "冉", "莹", "璐",
            "英", "青", "琳", "珠", "辉", "静", "莉", "宝", "波", "晓",
            "佳", "慧", "莹", "晶", "晨", "亮", "莉", "婷", "静", "浩",
            "雪", "雅", "彬", "琳", "萍", "磊", "霞", "亮", "瑞", "美",
            "磊", "婷", "燕", "娜", "静", "华", "妍", "瑶", "盈", "洁",
            "燕", "慧", "雪", "悦", "青", "浩", "芳", "峰", "蓉", "佳"
    };


    public static void main(String[] args) {
        List<String> sql = new ArrayList<>();
        Random random = new Random();
        Set<String> nameSet = new HashSet<>();
        // Generate 10 random names
        for (int i = 0; i < 1000000; i++) {
            String surname = SURNAMES[random.nextInt(SURNAMES.length)];
            int gender = i % 2 == 0 ? 0 : 1;
            String givenName = GIVEN_NAMES[random.nextInt(GIVEN_NAMES.length)];
            if (i % 2 == 0) {
                givenName += GIVEN_NAMES[random.nextInt(GIVEN_NAMES.length)];

            }
            String fullName = surname + givenName;
            int age = RandomUtil.randomInt(1, 95);

            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            String birthDay = formatter.format(LocalDate.now().minusYears(age));

            if (nameSet.add(fullName)) {
                sql.add(String.format(SQL_TEMPLATE, IdUtil.getSnowflake().nextId(), fullName, age, birthDay, gender));
            }
//            System.out.println(fullName);
        }
        FileUtil.writeLines(sql, new File("D://person.sql"), CharsetUtil.CHARSET_UTF_8);
        System.out.println(nameSet.size());
    }
}

